package rmi;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.List;

import service.ServiciosCliente;
import service.ServiciosCondicionPago;
import service.ServiciosDescuentoPorCantidad;
import service.ServiciosFabricante;
import service.ServiciosListaPrecios;
import service.ServiciosPais;
import service.ServiciosRodamiento;


import bean.vo.ClienteVO;
import bean.vo.CondicionPagoVO;
import bean.vo.DescuentoPorCantidadVO;
import bean.vo.FabricanteVO;
import bean.vo.ItemListaPreciosVO;
import bean.vo.PaisVO;
import bean.vo.ProductoVO;
import bean.vo.RodamientoVO;

//Objeto a publicar para las oficinas de venta
@SuppressWarnings("serial")
public class OficinaVtaRemote extends UnicastRemoteObject implements OficinaVtaInterfaz{

	protected OficinaVtaRemote() throws RemoteException {
		super();
	}

	public void altaCliente(ClienteVO cli) throws RemoteException {
		try {
			ServiciosCliente.crearCliente(cli);
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}

	public void bajaCliente(ClienteVO cli) throws RemoteException {
		try {
			ServiciosCliente.eliminarCliente(cli);
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}

	public void modificacionCliente(ClienteVO cli) throws RemoteException {
		try {
			ServiciosCliente.modificarCliente(cli);
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}
	
	public ClienteVO getCliente(ClienteVO cli) throws RemoteException {
		try {
			return ServiciosCliente.buscarCliente(cli);
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}

	@Override
	public List<ClienteVO> getClientes() throws RemoteException {
		try {
			return ServiciosCliente.getClientes();
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}

	@Override
	public List<DescuentoPorCantidadVO> getDescuentosPorCantidad() throws RemoteException {
		try {
			return ServiciosDescuentoPorCantidad.getDescuentosPorCantidad();
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}

	@Override
	public List<CondicionPagoVO> getCondicionesDePago() throws RemoteException {
		try {
			return ServiciosCondicionPago.getCondicionesPago();
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}

	public List<RodamientoVO> getRodamientos() throws RemoteException {
		try {
			return ServiciosRodamiento.getRodamientos();
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}
	
	public List<PaisVO> getPaises() throws RemoteException {
		try {
			return ServiciosPais.getPaises();
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}
	
	public List<FabricanteVO> getFabricantes()  throws RemoteException {
		try {
			return ServiciosFabricante.getFabricantes();
		} catch (Exception e) {
			throw new RemoteException(e.getMessage());
		}
	}
	
	public List<ItemListaPreciosVO> consultarPrecios(ProductoVO producto) throws RemoteException {
		return ServiciosListaPrecios.obtenerComparativaDePrecios(producto);
	}
}
